Rust
Author

(Milanesi, 2022, pp. 9-10)

Suma de números enteros

Veamos cómo calcular la suma de dos números enteros, por ejemplo, 80 y 34.

Coloque la siguiente línea como único contenido entre llaves de la función main:

print!("The sum is {}" 80 + 34);

La ejecución imprimirá: The sum is 114.

El segundo argumento de la macro print es la expresión 80 + 34.

El compilador no almacena en el archivo ejecutable los números tal como aparecen en el código fuente, utilizando el formato decimal. El compilador puede convertir los dos números a formato binario y luego puede almacenar en el archivo ejecutable dichos números binarios y la instrucción de suma en lenguaje de máquina. En tiempo de ejecución se suman los dos números binarios obteniendo el número 114 en formato binario.

Pero, como esta expresión contiene sólo valores constantes, el compilador probablemente optimiza la operación de suma evaluando directamente esa expresión, obteniendo el número entero 114; luego almacena ese número, en formato binario, en el archivo ejecutable.

En ambos casos, en tiempo de ejecución, el número binario resultante se convierte en la cadena de tres caracteres “114” en formato decimal y luego el marcador de posición { } de la cadena literal se reemplaza por la cadena generada. Finalmente, por supuesto, la cadena resultante se imprime en la consola.

Observe que el programa ha generado la cadena La suma es 114; no está presente en el código fuente, por lo que sigue siendo una cadena, pero no una cadena literal.

De manera similar, la secuencia de dos caracteres 80 representa un número entero directamente en el código fuente, por lo que se denomina literal entero. Lo mismo ocurre con los dos caracteres 34. En cambio, el número entero 114 no es un literal entero, ya que no aparece en el código fuente.

También puedes escribir:

print!("{} + {} = {}", 34, 80, 80 + 34);

cuya ejecución imprimirá 34 + 80 = 114.

En tal caso, el segundo argumento de la macro se colocará donde esté el primer marcador de posición, el tercer argumento donde esté el segundo marcador de posición y el cuarto argumento donde esté el tercer marcador de posición.

Puedes especificar cientos de argumentos para la macro print, siempre y cuando el número de argumentos posteriores al primero coincida con la cantidad de marcadores de posición { } dentro del primer argumento.

Back to top